﻿using NUnit.Framework;
using ScottPlot;
using ScottPlot.AxisPanels;
using Color = ScottPlot.Color;

namespace WordStudy20250123.DualAxisChart;

[TestFixture]
public class DualAxisChart
{
    [Test]
    public static void CreateChart()
    {
        string outputPath = @"D:\data\WordStudy20250123\ChartTest01\dual_axis_chart2.png";
        var plt = new Plot();

        // 生成示例数据（不同量级）
        // 生成正确的升序数据示例
        double[] xValues = Enumerable.Range(0, 50)
                                    .Select(x => (double)x) // 生成 0, 1, 2,...,99
                                    .ToArray();
        double[] leftY = Generate.Sin(50);          // 范围 [-1, 1]
        double[] rightY = Generate.Cos(50, 0.1).Select(x => x + 3).ToArray(); // 范围 [-100, 100]

        // ========== 关键配置步骤 ==========

        // 1. 添加左侧轴数据
        var leftScatter = plt.Add.Scatter(xValues, leftY);
        leftScatter.Color = Color.FromARGB(0xFF0000FF);

        // 2. 创建右侧轴并添加数据
        var rightScatter = plt.Add.Scatter(xValues, rightY);
        rightScatter.Color = Color.FromARGB(0xFFFF0000);
        RightAxis rightAxis = new();
        plt.Axes.AddRightAxis(rightAxis);
        rightScatter.Axes.YAxis = rightAxis;

        // 3. 独立缩放配置
        //plt.Axes.AutoScale(true); // 包含所有轴的自动缩放
        //plt.Axes.Zoom(1.05); // 留5%边距
        plt.Axes.SetLimitsX(xValues.Min(), xValues.Max());

        // 4. 设置轴标签
        plt.Axes.Left.Label.Text = "右轴（小量级）";
        plt.Axes.Right.Label.Text = "右轴（大量级）";

        // ========== 样式优化 ==========
        // 设置不同颜色区分
        plt.Axes.Left.Label.ForeColor = Color.FromARGB(0xFF0000FF);
        plt.Axes.Right.Label.ForeColor = Color.FromARGB(0xFFFF0000);

        // 调整布局防止重叠
        plt.Layout.Fixed(new PixelPadding(70, 70, 50, 40));

        plt.SavePng(outputPath, 1200, 800);
    }
}